import { Http } from "../utils/http";
//业务对象
//theme 、banner、spu、sku、address、user
export class Theme {
    static locationA = 't-1'
    static locationE = 't-2'
    static locationF = 't-3'
    static locationH = 't-4'
    // 保存themes的三种方法
    // this.data.themes = themes
    // 缓存
    // 保存在全局 app

    // 保存数据
    // 保存数据 类的对象 本身就具有保存数据的功能
    // 类保存数据类 不能保存状态
    // 类的对象 数据 状态

    //扩展性
    themes = []

    async getThemes() {
        const names = `${Theme.locationA},${Theme.locationE},${Theme.locationF},${Theme.locationH}`
        this.themes = await Http.request({
            url: `theme/by/names`,
            data: {
                names
            }
        })
    }

    getHomeLocationA() {
        // name = t-1
        //for(let theme of themes){
        //      if theme. name = t-1
        // }
        //集合
        //find、filter、map、some、reduce   函数式编程
        return this.themes.find(t => t.name === Theme.locationA)
    }

    // 每一个数据http
    // Home只发送一个http
    // 有选择的把部分http请求合并成一个

    // 1.HTTP请求数量
    // 2.Http多少次数据库查询join
    // 3．接口的灵活性，接口的可维护性，粒度

    getHomeLocationE() {
        return this.themes.find(t => t.name === Theme.locationE)
    }
    getHomeLocationF() {
        return this.themes.find(t => t.name === Theme.locationF)
    }
    getHomeLocationH() {
        return this.themes.find(t => t.name === Theme.locationH)
    }

    static async getHomeLocationESpu() {
        return Theme.getThemeSpuByName(Theme.locationE)
    }

    //一次性

    static async getThemeSpuByName(name) {
        return await Http.request({
            url: `theme/name/${name}/with_spu`
        })
    }
}